/****************************************************************
 *
 *  Auto generated
 *
 ****************************************************************/
#include "../fireemblem/engine/Game.h"
#include "../fireemblem/engine/Game.cc"

namespace fireemblem { namespace engine {

    class GameTP final : public IGame
    {
    public:
        virtual void Run() override
        {
            m_impl.Run();
        }
    public:
        GameTP() : m_impl(*this)
        {
        }
        virtual void Dispose() override
        {
            delete this;
        }
        virtual const IType* const GetType() const override
        {
            return GetGameType();
        }
        virtual IReflectable* Invoke(const char* name, IReflectable** args) override
        {
            // TODO:
            return nullptr;
        }
    private:
        Game m_impl;
    private:
        friend const IType* const GetGameType();
        class Type final : public IType
        {
        public:
            virtual void Dispose() override
            {
            }
            virtual IReflectable* CreateInstance() const override
            {
                return new GameTP();
            }
            virtual const char* const GetName() const override
            {
                return "Game";
            }
            virtual const char* const GetFullName() const override
            {
                return "fireemblem.Game";
            }
        };
    };

    const IType* const GetGameType()
    {
        static GameTP::Type type;
        return &type;
    }
}}